import type { AxiosRequestConfig, AxiosResponse } from 'axios'
/**
 * 1.定义一个自己的拦截器接口
 * 2.在axios的请求接口中加入自己的拦截器接口，主要用于单个请求的自定义拦截器
 */
export interface RequestInterceptors {
  // 请求拦截
  requestInterceptors?: (config: AxiosRequestConfig) => AxiosRequestConfig//对于拦截器 需要传入config参数 拦截器对config参数作修改
  requestInterceptorsCatch?: (err: any) => any
  // 响应拦截
  responseInterceptors?: <T = AxiosResponse>(config: T) => T //拦截器传入和返回
  responseInterceptorsCatch?: (err: any) => any
}
// 自定义传入的参数 在继承原有的config上增加多一个拦截器,可选，并且指定类型
export interface RequestConfig extends AxiosRequestConfig {
  interceptors?: RequestInterceptors
}
export interface CancelRequestSource {
  [index: string]: () => void 
}